#pragma once
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<stdbool.h> 

// 用不带头单向链表实现
typedef int QDataType;
typedef struct QueueNode
{// 队列 节点 的结构体类型
	int val;
	struct QueueNode* next;
}QNode;

//定义队列的结构体类型
typedef struct Queue
 {
	QNode* phead;
	QNode* ptail;
	int size;
 }Queue;

void QueueInit(Queue* pq);
void QueueDestry(Queue* pq);

// 出、入队列
void QueuePush(Queue* pq, QDataType x);
void QueuePop(Queue* pq);

QDataType QueueFront(Queue* pq);
QDataType QueueBack(Queue* pq);

int QueueSize(Queue* pq);
bool QueueEmpty(Queue* pq);